
package convertir;
import java_cup.runtime.*;
import java.io.Reader;

%%//inicio de opciones

/* ------ Seccion de opciones y declaraciones de JFlex -------------- 
nombre d la clase
*/  
%class AnalizadorLexico

// Activar el contador de lineas=yyline ;columna= yycolumn
%line
%column
    
/* Activamos la compatibilidad con Java CUP para analizadores
   sintacticos(parser)*/
%cup


/*Declaraciones
    El codigo entre %{  y %} sera copiado integramente en el 
    analizador generado.*/
%{
    /*  Generamos un java_cup.Symbol para guardar el tipo de token 
        encontrado */
    private Symbol symbol(int type, int yyline, int yycolumn) {
        return new Symbol(type, yyline, yycolumn);
    }
    
    /* Generamos un Symbol para el tipo de token encontrado 
       junto con su valor */
    private Symbol symbol(int type, Object value) {
        return new Symbol(type, yyline, yycolumn, value);
    }
%}

//cuando termine de leer el archivo d entrada finalice y 
//no s haga bucle infinito, donde eof==end of file: fin de archivo
/*
%eof{
 System.exit(0);
%eof}
 */
/*  Un salto de linea es un \n, \r o \r\n dependiendo del SO   */
Salto = \r|\n|\r\n
Espacio     = {Salto} | [ \t\f]
   
/* Espacio es un espacio en blanco, tabulador \t, salto de linea 
    o avance de pagina \f, normalmente son ignorados */

/* Una literal entera es un numero 0 oSystem.out.println("\n*** Generado " + archNombre + "***\n"); un digito del 1 al 9 
    seguido de 0 o mas digitos del 0 al 9 */

%%
<YYINITIAL>{
    ";" {System.out.print(" ");
    return symbol(sym.FL,yyline,yycolumn);}

    "convNum" {System.out.print(" ");
    return symbol(sym.CONVNUM,yyline,yycolumn);}

    "numLetras" {System.out.print(" ");
    return symbol(sym.NUMLETRAS,yyline,yycolumn);}

    "uno" {System.out.print(" uno ");
    return symbol(sym.UNO, yyline,yycolumn);}

    "dos" {System.out.print(" dos ");
    return symbol(sym.DOS,yyline,yycolumn);}

    "tres" {System.out.print(" tres ");
    return symbol(sym.TRES,yyline,yycolumn);}

    "cuatro" {System.out.print(" cuatro ");
    return symbol(sym.CUATRO,yyline,yycolumn);}

    "cinco" {System.out.print(" cinco ");
    return symbol(sym.CINCO,yyline,yycolumn);}

    "seis" {System.out.print(" seis ");
    return symbol(sym.SEIS,yyline,yycolumn);}

    "siete" {System.out.print(" siete ");
    return symbol(sym.SIETE,yyline,yycolumn);}

    "ocho" {System.out.print(" ocho ");
    return symbol(sym.OCHO,yyline,yycolumn);}

    "nueve" {System.out.print(" nueve ");
    return symbol(sym.NUEVE,yyline,yycolumn);}

    "diez" {System.out.print(" diez ");
    return symbol(sym.DIEZ,yyline,yycolumn);}

    "veinte" {System.out.print(" veinte ");
    return symbol(sym.VEINTE,yyline,yycolumn);}

    "treinta" {System.out.print(" treinta ");
    return symbol(sym.TREINTA,yyline,yycolumn);}

    "cuarenta" {System.out.print(" cuarenta ");
    return symbol(sym.CUARENTA,yyline,yycolumn);}

    "cincuenta" {System.out.print(" cincuenta ");
    return symbol(sym.CINCUENTA,yyline,yycolumn);}

    "sesenta" {System.out.print(" sesenta ");
    return symbol(sym.SESENTA,yyline,yycolumn);}

    "setenta" {System.out.print(" setenta ");
    return symbol(sym.SETENTA,yyline,yycolumn);}
    
    "ochenta" {System.out.print(" ochenta ");
    return symbol(sym.OCHENTA,yyline,yycolumn);}

    "noventa" {System.out.print(" noventa ");
    return symbol(sym.NOVENTA,yyline,yycolumn);}

    "cien" {System.out.print(" cien ");
    return symbol(sym.CIEN,yyline,yycolumn);}

    {Espacio} { /*ignore*/ }
}

/* Si el token contenido en la entrada no coincide con ninguna regla
    entonces se marca un token ilegal */

. {System.err.println("caracter invalido " +  yytext() 
    + " ["+ (yyline+1) + ":"+ (yycolumn+1) + "]");}


